02. 定义函数

Definindo funções

定义函数

函数定义示例:

def cylinder_volume(height, radius):
    pi = 3.14159
    return height * pi * radius ** 2

定义 cylinder_volume 函数后,我们可以如下所示地调用该函数。

cylinder_volume(10, 3)

函数定义包含几个重要部分。

函数头部

我们从函数头部开始,即函数定义的第一行。

  1. 函数头部始终以关键字 def 开始,表示这是函数定义。
  2. 然后是函数名称(在此例中是 cylinder_volume,因为函数名是要一个单词,所以需要用_进行连接),遵循的是和变量一样的命名规范。你可以在本页面下方回顾下命名规范。
  3. 名称之后是括号,其中可能包括用英文逗号分隔的参数(在此例中是 heightradius)。形参(或实参)是当函数被调用时作为输入传入的值,用在函数主体中。如果函数没有参数,这些括号留空。
  4. 头部始终以英文冒号 : 结束。

函数主体

函数的剩余部分包含在主题中,也就是函数完成操作的部分。

  1. 函数主体是在头部行之后缩进的代码。在此例中是定义 π 和返回体积的两行代码。
  2. 在此主体中,我们可以引用参数并定义新的变量,这些变量只能在这些缩进代码行内使用。
  3. 主体将经常包括 return 语句,用于当函数被调用时返回输出值。return 语句包括关键字 return,然后是经过评估以获得函数输出值的表达式。如果没有 return 语句,函数直接返回 None(例如内置 print() 函数)。

函数的命名规范

函数名称遵守和变量一样的命名规范。

  1. 仅在函数名称中使用普通字母、数字和下划线。不能有空格,需要以字母或下划线开头。
  2. 不能使用在 Python 中具有重要作用的保留字或内置标识符,我们将在这门课程中学习这方面的知识。要了解 python 保留字列表,请参阅此处
  3. 尝试使用可以帮助读者了解函数作用的描述性名称。

Argumentos padrão

默认参数

我们可以向函数中添加默认参数,以便为在函数调用中未指定的参数提供默认值。

def cylinder_volume(height, radius=5):
    pi = 3.14159
    return height * pi * radius ** 2

在上述示例中,如果在函数调用中忽略了 radius,则将该参数设为 5。如果我们调用 cylinder_volume(10),该函数将使用 10 作为高度,使用 5 作为半径。但是,如果调用 cylinder_volume(10, 7),7 将覆盖默认的值 5。

此外注意,我们按照位置向参数传递值。可以通过两种方式传递值:按照位置和按照名称。下面两个函数的效果是一样的。

cylinder_volume(10, 7)  # pass in arguments by position
cylinder_volume(height=10, radius=7)  # pass in arguments by name